home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
mac
/
LOGIC Apple II 5.25" Library - DOS Part 1
/
DOS002.dsk
/
PETLOADER INSTRUCTIONS.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
22KB
|
506 lines
100 TEXT : NORMAL : HOME
1000 PRINT "'P E T L O A D E R' -- BY FALKNER"
1020 PRINT " (LOAD PET PROGRAMS INTO AN APPLE)"
1030 PRINT ""
1040 PRINT "***** 1. INTRODUCTION."
1050 PRINT ""
1060 PRINT "BOTH THE COMMODORE PET AND THE APPLE"
1070 PRINT "ARE BASED ON THE 6502 MICROPROCESSOR,"
1080 PRINT "AND MICROSOFT WROTE BOTH COMMODORE"
1090 PRINT "BASIC AND APPLESOFT. COULD IT BE THAT"
1100 PRINT "THESE SIMILARITIES WOULD ENABLE ME TO"
1110 PRINT "WRITE A PROGRAM TO LOAD PET PROGRAMS"
1120 PRINT "INTO MY APPLE? I PROVED THEY WOULD,"
1130 PRINT "AND THIS ARTICLE DESCRIBES THE PROGRAM"
1140 PRINT "WHICH RESULTED, CALLED 'PET LOADER'."
1150 PRINT "THE SIMILARITIES IN THE BASIC LANGUAGE"
1160 PRINT "WERE ESSENTIAL TO THIS PROJECT; THE"
1170 PRINT "COMMON 6502 PROCESSOR DID NOT MATTER."
1180 PRINT ""
1190 PRINT "***** 2. ABSTRACT."
1200 PRINT ""
1210 PRINT "THE PROGRAM OPERATES IN AN APPLE WITH"
1220 PRINT "APPLESOFT IN ROM, AND LOADS PROGRAMS"
1230 PRINT "SAVED ONTO TAPE BY ANY COMMODORE PET."
1231 GOSUB 9999
1240 PRINT "THE APPLE MUST HAVE 2K MORE MEMORY"
1250 PRINT "THAN THE PET ABSOLUTELY NEEDED (E.G."
1260 PRINT "A PROGRAM WHICH JUST FIT IN AN 8K PET"
1270 PRINT "WILL JUST FIT IN 10K OF THE APPLE)."
1280 PRINT "THERE IS NO CERTAINTY THAT ANY PROGRAM"
1290 PRINT "SO LOADED WILL ACTUALLY RUN, BUT MANY"
1300 PRINT "IN FACT OPERATE PERFECTLY. ALL ERROR"
1310 PRINT "CONDITIONS ARE DETECTED, AND ATTEMPTS"
1320 PRINT "ARE MADE TO RECOVER FROM TAPE ERRORS."
1330 PRINT "THERE IS NO REQUIREMENT FOR A DISK."
1340 PRINT ""
1350 PRINT "***** 3. METHOD (BRIEFLY)."
1360 PRINT ""
1370 PRINT "THE PROGRAM PRINTS A GREETING AND ASKS"
1380 PRINT "FOR A PET PROGRAM TAPE, THEN A PRESS"
1390 PRINT "OF A KEY STARTS THE LOADING PROCESS."
1400 PRINT "'PET LOADER' FINDS AND VERIFIES THE"
1410 PRINT "LABEL OF THE TAPE, AND FROM IT LEARNS"
1420 PRINT "THE PROGRAM NAME AND THE AMOUNT OF"
1430 PRINT "MEMORY REQUIRED. THE IMAGE OF THE PET"
1440 PRINT "PROGRAM IS LOADED INTO MEMORY, THEN A"
1450 PRINT "BEEP SIGNALS THAT THE TAPE MAY BE"
1460 PRINT "STOPPED. THE LOADED IMAGE IS SCANNED,"
1461 GOSUB 9999
1470 PRINT "AND PET TOKENS (AND SOME PET DATA) ARE"
1480 PRINT "CONVERTED TO THE APPLE EQUIVALENT IF"
1490 PRINT "SUCH EXISTS. WHEN NO APPLE EQUIVALENT"
1500 PRINT "EXISTS, A HELPFUL SUBSTITUTION IS MADE"
1510 PRINT "(E.G. $B3, THE APPLE TOKEN FOR " CHR$(162)"STOP" CHR$(162)""
1520 PRINT "REPLACES THE PET TOKEN FOR " CHR$(162)"CMD" CHR$(162)", SO"
1530 PRINT "THAT OPERATION OF THE CONVERTED PET"
1540 PRINT "PROGRAM WILL CEASE AT THE POINT OF"
1550 PRINT "INCOMPATIBILITY). THE CONVERTED PET"
1560 PRINT "PROGRAM CAN THEN BE LISTED, ALTERED,"
1570 PRINT "SAVED, AND/OR MAYBE RUN. 'PET LOADER'"
1580 PRINT "CAN BE RESTARTED FROM ITS BEGINNING"
1590 PRINT "AT ANY TIME, EVEN AFTER IT HAS RUN."
1600 PRINT "'PET LOADER' IS AN ASSEMBLY-LANGUAGE"
1610 PRINT "PROGRAM, BUT FOR CONVENIENCE IT IS"
1620 PRINT "DISGUISED AS AN APPLESOFT PROGRAM, AND"
1630 PRINT "CAN BE LOADED AND SAVED AS SUCH (UNTIL"
1640 PRINT "IT HAS BEEN RUN, BUT NOT AFTER THAT)."
1650 PRINT " "
1660 PRINT "***** 4. ERROR CONDITIONS."
1670 PRINT ""
1680 PRINT "THESE ERRORS CAN OCCUR, PREVENTING THE"
1690 PRINT "INTENDED CONVERSION OF THE PROGRAM:"
1691 GOSUB 9999
1700 PRINT ""
1710 PRINT " 1. 'PET LOADER' CANNOT FIND THE"
1720 PRINT " LABEL OF THE PET PROGRAM TAPE."
1730 PRINT ""
1740 PRINT " 2. THE LABEL CANNOT BE CORRECTLY"
1750 PRINT " READ (TWO TRIES ARE MADE)."
1760 PRINT ""
1770 PRINT " 3. THE LABEL SAYS THIS IS NOT A"
1780 PRINT " BASIC PROGRAM (PROBABLY DATA)."
1790 PRINT ""
1800 PRINT " 4. THE PET PROGRAM IS TOO BIG"
1810 PRINT " FOR THE APPLE'S USABLE MEMORY."
1820 PRINT ""
1830 PRINT " 5. 'PET LOADER' CANNOT FIND THE"
1840 PRINT " IMAGE OF THE BASIC PROGRAM."
1850 PRINT ""
1860 PRINT "TO CONSERVE MEMORY, THE ERROR MESSAGE"
1870 PRINT "FOR THE ABOVE IS A SINGLE DIGIT (1-5),"
1880 PRINT "FOLLOWED BY 'ERR', THEN A BEEP. 'PET"
1890 PRINT "LOADER' HAS FAILED TO LOAD THE PROGRAM"
1900 PRINT "BUT ANOTHER TRY CAN BE BEGUN WITH THE"
1910 PRINT "& KEY, WITHOUT RELOADING 'PET LOADER'."
1920 PRINT ""
1921 GOSUB 9999
1930 PRINT "PLEASE NOTE: THE ABOVE EXCLUDES THE"
1940 PRINT "SITUATION WHEN THE IMAGE OF THE PET"
1950 PRINT "PROGRAM CANNOT BE READ ACCURATELY."
1960 PRINT "IN THIS EVENT, 'PET LOADER' BRAVELY"
1970 PRINT "CARRIES ON, AND MAY OR MAY NOT PRODUCE"
1980 PRINT "MEANINGFUL RESULTS; FOR ANY BYTE WHICH"
1990 PRINT "WAS NOT CORRECTLY READ, 'PET LOADER'"
2000 PRINT "SUBSTITUTES $FC, WHICH IS APPLESOFT'S"
2010 PRINT "TOKEN FOR " CHR$(162)" ERROR(BEEP) " CHR$(162)". THESE ARE"
2020 PRINT "AUDIBLY DISCLOSED IF THE USER LISTS"
2030 PRINT "THE CONVERTED PROGRAM, AFTER WHICH THE"
2040 PRINT "USER CAN DECIDE WHETHER TO PATCH UP"
2050 PRINT "THE PROGRAM OR JUST ABANDON IT. (THIS"
2060 PRINT "APPROACH IS JUSTIFIED BY A RHETORICAL"
2070 PRINT "QUESTION: " CHR$(162)"IF 'PET LOADER' CANNOT READ"
2080 PRINT "THE TAPE, THEN WHAT ON EARTH CAN?" CHR$(162)")"
2090 PRINT ""
2100 PRINT "***** 6. OPERATION."
2110 PRINT ""
2120 PRINT "HERE IS HOW TO OPERATE 'PET LOADER':"
2130 PRINT ""
2140 PRINT " 1. READY AN APPLE, EQUIPPED WITH"
2150 PRINT " APPLESOFT IN ROM, TO RUN AN"
2151 GOSUB 9999
2160 PRINT " APPLESOFT PROGRAM AT STANDARD"
2170 PRINT " MEMORY LOCATION 2048 ($800)."
2180 PRINT " (I.E. JUST TURN THE APPLE ON!)"
2190 PRINT ""
2200 PRINT ""
2210 PRINT " 2. LOAD 'PET LOADER' FROM DISK"
2220 PRINT " OR TAPE, AND RUN IT. IT WILL"
2230 PRINT " STOP, ASKING FOR A PET TAPE."
2240 PRINT ""
2250 PRINT " 3. (TO BREAK OUT, TYPE CTRL-C.)"
2260 PRINT ""
2270 PRINT " 4. REWIND (OR OTHERWISE POSITION)"
2280 PRINT " A PET PROGRAM TAPE, THEN PRESS"
2290 PRINT " 'PLAY' ON THE TAPE UNIT, AND"
2300 PRINT " PRESS ANY KEY ON THE KEYBOARD."
2310 PRINT ""
2320 PRINT " 5. WITHIN 20 SECONDS, THE NAME OF"
2330 PRINT " THE PET PROGRAM SHOULD APPEAR."
2340 PRINT " IT IS NOT NECESSARILY AN ERROR"
2350 PRINT " IF THIS TAKES SEVERAL MINUTES."
2360 PRINT ""
2370 PRINT " 6. RELAX! PROGRAMS LOAD SLOWLY."
2380 PRINT " (E.G. 20K IN NINE MINUTES!)"
2381 GOSUB 9999
2390 PRINT ""
2400 PRINT " 7. AT THE BEEP, STOP THE TAPE."
2410 PRINT " 'PET LOADER' WILL SOON FINISH"
2420 PRINT " ITS CONVERSIONS, PRINT " CHR$(162)"OK" CHR$(162)","
2430 PRINT " AND RETURN CONTROL TO APPLE'S"
2440 PRINT " KEYBOARD. "
2450 PRINT ""
2460 PRINT " 8. LIST, CHANGE, SAVE, OR RUN THE"
2470 PRINT " CONVERTED PROGRAM AS DESIRED."
2480 PRINT ""
2490 PRINT " 9. IF A NUMBERED ERROR MESSAGE IS"
2500 PRINT " SHOWN, REFER TO ITEM 4 ABOVE."
2510 PRINT " "
2520 PRINT " 10. AFTER A SUCCESSFUL LOAD, 'PET"
2530 PRINT " LOADER' CAN BE RESTARTED WITH"
2540 PRINT " THE APPLESOFT COMMAND " CHR$(162)"&" CHR$(162)", OR"
2550 PRINT " ALTERNATIVELY " CHR$(162)"CALL 2064" CHR$(162)"."
2560 PRINT ""
2570 PRINT "NOTE: PET TAPES ARE INTRINSICALLY A"
2580 PRINT "LITTLE LOUDER THAN APPLE TAPES. IT MAY"
2590 PRINT "BE APPROPRIATE TO USE A VOLUME SETTING"
2600 PRINT "ABOUT 10-20% LOWER THAN THE USUAL ONE."
2610 PRINT ""
2611 GOSUB 9999
2620 PRINT "***** 7. RELIABILITY."
2630 PRINT ""
2640 PRINT "EXTENSIVE TESTING HAS SHOWN THAT 'PET"
2650 PRINT "LOADER' IS RELIABLE AND ACCURATE. THIS"
2660 PRINT "IS LARGELY DUE TO THE METHOD COMMODORE"
2670 PRINT "CHOSE TO RECORD DATA ON TAPE. SPECIFIC"
2680 PRINT "INFORMATION CAN BE GLEANED FROM THE"
2690 PRINT "PROGRAM LISTING. INADVERTANT CLUMSY"
2700 PRINT "OPERATION OF A TAPE UNIT DAMAGED A PET"
2710 PRINT "PROGRAM TAPE, FORTUNATELY PROVIDING A"
2720 PRINT "TEST OF THE ERROR-RECOVERY CAPABILITY"
2730 PRINT "OF 'PET LOADER'. IT ACCURATELY LOADED"
2740 PRINT "A PROGRAM SO BADLY DAMAGED THAT A PET"
2750 PRINT "COULD NOT LOAD IT AT ALL. EXPERIENCE"
2760 PRINT "WITH 30-MINUTE TAPES JAMMED END-TO-END"
2770 PRINT "WITH PROGRAMS REPEATEDLY PRODUCED 100%"
2780 PRINT "SUCCESSFUL LOADS OF ALL THE PROGRAMS."
2790 PRINT ""
2800 PRINT "***** 8. CONVERSION."
2810 PRINT ""
2820 PRINT "A PET PROGRAM LOADED INTO AN APPLE IS"
2830 PRINT "STILL A PET PROGRAM. SOME WILL OPERATE"
2840 PRINT "PERFECTLY, OTHERS WILL REQUIRE SLIGHT"
2841 GOSUB 9999
2850 PRINT "CHANGES, WHILE MANY WILL BE SO RIDDLED"
2860 PRINT "WITH CODE SPECIFIC TO THE PET THAT IT"
2870 PRINT "WOULD BE POINTLESS TO EVEN TRY TO MAKE"
2880 PRINT "THEM RUN. HERE ARE THE MAJOR AREAS OF"
2890 PRINT "DIFFERENCE BETWEEN COMMODORE BASIC AND"
2900 PRINT "APPLESOFT:"
2910 PRINT ""
2920 PRINT " 1. NO EQUIVALENT VERB IN APPLE."
2930 PRINT ""
2940 PRINT " " CHR$(162)"OPEN" CHR$(162)", " CHR$(162)"CLOSE" CHR$(162)", " CHR$(162)"CMD" CHR$(162)" AND"
2950 PRINT " " CHR$(162)"VERIFY" CHR$(162)" ARE COMMANDS IN"
2960 PRINT " COMMODORE BASIC. EACH OF THESE"
2970 PRINT " IS TRANSLATED INTO " CHR$(162)"STOP" CHR$(162)", AND"
2980 PRINT " THE USER WILL HAVE TO DECIPHER"
2990 PRINT " THE PROGRAMMER'S INTENT, AND"
3000 PRINT " PROGRAM EQUIVALENT APPLE CODE."
3010 PRINT " (CONTEXT OUGHT TO IMPLY WHAT"
3020 PRINT " THE VERB WAS IN THE PET.)"
3030 PRINT ""
3040 PRINT " 2. SPECIFIC ADDRESS REFERENCE."
3050 PRINT ""
3060 PRINT " " CHR$(162)"PEEK" CHR$(162)" AND " CHR$(162)"POKE" CHR$(162)" AND " CHR$(162)"CALL" CHR$(162)""
3070 PRINT " (PET " CHR$(162)"SYS" CHR$(162)" = APPLE " CHR$(162)"CALL" CHR$(162)")"
3071 GOSUB 9999
3080 PRINT " ARE ALWAYS MACHINE-SPECIFIC,"
3090 PRINT " AND ALL THESE MUST BE HANDLED"
3100 PRINT " INDIVIDUALLY. PERHAPS WHOEVER"
3110 PRINT " PROVIDED THE PET TAPE CAN"
3120 PRINT " LOAN SOME MANUALS OR OFFER"
3130 PRINT " SOME HINTS. I OFFER SOME BELOW."
3140 PRINT ""
3150 PRINT ""
3160 PRINT " 3. SPECIFIC DEVICE REFERENCE."
3170 PRINT ""
3180 PRINT " PROGRAMS CONTAINING " CHR$(162)"OPEN" CHR$(162)" AND"
3190 PRINT " " CHR$(162)"CLOSE" CHR$(162)" WILL ALSO CONTAIN"
3200 PRINT " " CHR$(162)"INPUT#" CHR$(162)" &/OR " CHR$(162)"PRINT#" CHR$(162)", WHICH"
3210 PRINT " ARE SIMPLY TRANSLATED TO " CHR$(162)"IN#" CHR$(162)""
3220 PRINT " AND " CHR$(162)"PR#" CHR$(162)" RESPECTIVELY. EITHER"
3230 PRINT " WRITE CODE FOR DOS, OR DELETE"
3240 PRINT " USE OF THE DEVICE IN QUESTION."
3250 PRINT ""
3260 PRINT " 4. CURSOR CONTROL."
3270 PRINT ""
3280 PRINT " PET HAS 10 KEYS FOR CONTROL OF"
3290 PRINT " THE POSITION OR ACTION OF THE"
3300 PRINT " CURSOR. THESE ARE TRANSLATED:"
3301 GOSUB 9999
3310 PRINT ""
3320 PRINT " (2) FUNCTIONAL EQUIVALENTS,"
3330 PRINT " "
3340 PRINT " CURSOR-LEFT BECOMES BACKSPACE"
3350 PRINT " AND LOOKS LIKE " CHR$(162)"GR" CHR$(162)" WHEN SEEN"
3360 PRINT " INSIDE QUOTES;"
3370 PRINT ""
3380 PRINT " CURSOR-DOWN BECOMES CTRL-J"
3390 PRINT " AND LOOKS LIKE " CHR$(162)"PR#" CHR$(162)" WHEN "
3400 PRINT " SEEN INSIDE QUOTES;"
3410 PRINT ""
3420 PRINT " (1) DESTRUCTIVE APPROXIMATION"
3430 PRINT ""
3440 PRINT " CURSOR-RIGHT BECOMES SPACE,"
3450 PRINT " WHICH OBLITERATES WHAT IT "
3460 PRINT " SPACES PAST, AND LOOKS LIKE"
3470 PRINT " " CHR$(162)"COLOR=" CHR$(162)" WHEN SEEN IN QUOTES;"
3480 PRINT ""
3490 PRINT " (7) NON-FUNCTIONAL COMMENTS"
3500 PRINT ""
3510 PRINT " WHEN THE PROGRAM IS LISTED,"
3520 PRINT " THESE APPEAR, AND IT LOOKS AS"
3530 PRINT " IF THE NAME OF THE KEY WILL"
3531 GOSUB 9999
3540 PRINT " PRINT, FOR EXAMPLE:"
3550 PRINT ""
3560 PRINT " 100 PRINT " CHR$(162)" CLEAR " CHR$(162)""
3570 PRINT " 110 PRINT " CHR$(162)" INVERSE INSTRUC"
3580 PRINT " TIONS NORMAL " CHR$(162)""
3590 PRINT ""
3600 PRINT " IN FACT WHAT IS SEEN IS:"
3610 PRINT ""
3620 PRINT " (WHAT WAS ALREADY THERE)"
3630 PRINT " ="
3640 PRINT " INSTRUCTIONS"
3650 PRINT ""
3660 PRINT " LINE 100 PRODUCED THE EQUAL"
3670 PRINT " SIGN, AND LINE 110 DID NOT"
3680 PRINT " CAUSE VIDEO INVERSION. 'PET"
3690 PRINT " LOADER' SUBSTITUTED A TOKEN"
3700 PRINT " FOR THE CURSOR-CONTROL KEY IN"
3710 PRINT " EACH CASE, CHOOSING A TOKEN"
3720 PRINT " WHICH WOULD MAKE THE INTENT"
3730 PRINT " OF THE PET PROGRAM EASY TO"
3740 PRINT " DISCOVER. WHAT YOU SEE IS"
3750 PRINT " DEFINITELY NOT WHAT YOU GET!"
3760 PRINT ""
3761 GOSUB 9999
3770 PRINT " INTENT LISTS AS ACTION"
3780 PRINT " ------ -------- ------"
3790 PRINT " "
3800 PRINT " REVERSE INVERSE NONE"
3810 PRINT " REV OFF NORMAL NONE"
3820 PRINT " CUR UP VLIN NONE"
3830 PRINT " CUR HOME HOME NONE"
3840 PRINT " CLEAR CLEAR PRINT ="
3850 PRINT " INSERT IN# NONE"
3860 PRINT " DELETE DEL NONE"
3870 PRINT ""
3880 PRINT " IN ALL CASES BUT THE LAST TWO,"
3890 PRINT " THE EQUIVALENT APPLE CODE IS"
3900 PRINT " OBVIOUS. THE LOGIC FOR " CHR$(162)"INSERT" CHR$(162)""
3910 PRINT " AND " CHR$(162)"DELETE" CHR$(162)" IS VERY DIFFICULT"
3920 PRINT " TO INSTALL. PERHAPS A DIFFERENT"
3930 PRINT " APPROACH WOULD BE BEST ..."
3940 PRINT ""
3950 PRINT " 5. PRINTING OF NUMBERS."
3960 PRINT ""
3970 PRINT " 290 X=4:Y=-6"
3980 PRINT " 300 PRINT " CHR$(162)"X IS" CHR$(162)"X" CHR$(162)"Y IS" CHR$(162)"Y"
3990 PRINT ""
3991 GOSUB 9999
4000 PRINT " THE PET PRINTS X IS 4 Y IS -6"
4010 PRINT ""
4020 PRINT " THE APPLE PRINTS X IS4Y IS-6"
4030 PRINT ""
4040 PRINT " EITHER THIS WILL NOT MATTER, OR"
4050 PRINT " IT IS AN EASY THING TO TIDY UP."
4060 PRINT " IN TIDYING THIS UP, CHANGE ALL"
4070 PRINT " THE " CHR$(162)"TAB" CHR$(162)" FIELDS TO GO ONE MORE"
4080 PRINT " COLUMN THAN THEY DID IN THE PET."
4090 PRINT ""
4100 PRINT " 6. THE " CHR$(162)"TAB" CHR$(162)" OPERATION"
4110 PRINT ""
4120 PRINT " IN THE PET, A PROGRAM CAN " CHR$(162)"TAB" CHR$(162)""
4130 PRINT " PAST WHAT IS ALREADY SHOWING ON"
4140 PRINT " THE SCREEN, AND IT CONTINUES TO"
4150 PRINT " SHOW, BUT THE APPLE BLANKS DATA"
4160 PRINT " WHICH IS " CHR$(162)"TABBED" CHR$(162)" OVER. " CHR$(162)"HTAB" CHR$(162)""
4170 PRINT " CAN BE SUBSTITUTED, AS FOLLOWS:"
4180 PRINT ""
4190 PRINT " PET: PRINT TAB(11) " CHR$(162)"XYZ" CHR$(162)""
4200 PRINT ""
4210 PRINT " APPLE: HTAB 12 : PRINT " CHR$(162)"XYZ" CHR$(162)""
4220 PRINT ""
4221 GOSUB 9999
4230 PRINT " 7. BOOLEAN ARITHMETIC"
4240 PRINT ""
4250 PRINT " 400 X=9:Y=4:Z=X>Y"
4260 PRINT " 410 IF Z THEN 500"
4270 PRINT ""
4280 PRINT " Z IS SET TO -1 IN THE PET, BUT"
4290 PRINT " TO +1 IN THE APPLE. THIS IS NOT"
4300 PRINT " ALWAYS A PROBLEM, BECAUSE LINE"
4310 PRINT " 410 WILL OPERATE SIMILARLY IN"
4320 PRINT " BOTH COMPUTERS, GOING TO LINE "
4330 PRINT " 500 IN THIS CASE, BUT IF ANY"
4340 PRINT " COMPUTATION IS DONE USING Z,"
4350 PRINT " EXPECT SUBTLY WRONG RESULTS."
4360 PRINT ""
4370 PRINT " FURTHERMORE, THE PET DOES BIT-"
4380 PRINT " BY-BIT BOOLEAN OPERATIONS, E.G."
4390 PRINT " "
4400 PRINT " '31 AND 56' HAS THE VALUE 24"
4410 PRINT ""
4420 PRINT " 1F 38 (HEX) 18"
4430 PRINT ""
4440 PRINT " APPLE GIVES THE DULL RESULT '1'"
4450 PRINT " BECAUSE NEITHER 31 NOR 56 IS 0."
4451 GOSUB 9999
4460 PRINT ""
4470 PRINT " 8. RANDOM NUMBERS"
4480 PRINT ""
4490 PRINT " RND (0) GIVES DIFFERENT RESULTS"
4500 PRINT " EVERY TIME IN THE PET, BUT THE"
4510 PRINT " SAME RESULT ALWAYS IN THE APPLE."
4520 PRINT " SIMPLY REPLACE THE ZERO WITH 1."
4530 PRINT ""
4540 PRINT " 9. " CHR$(162)"GET" CHR$(162)" COMMAND"
4550 PRINT ""
4560 PRINT " IN THE PET, " CHR$(162)"GET" CHR$(162)" DOES NOT WAIT"
4570 PRINT " FOR A KEYSTROKE, BUT IT DOES IN"
4580 PRINT " THE APPLE. SOMETIMES THE " CHR$(162)"GET" CHR$(162)""
4590 PRINT " MUST BE REPLACED WITH A PEEK AT"
4600 PRINT " THE KEYBOARD:"
4610 PRINT ""
4620 PRINT " 550 GET A$:IF A$ = " CHR$(162)"" CHR$(162)" THEN 600"
4630 PRINT ""
4640 PRINT " MUST BECOME"
4650 PRINT ""
4660 PRINT " 550 IF PEEK(-16384) < 128 "
4670 PRINT " THEN A$ = " CHR$(162)"" CHR$(162)" : GOTO 600"
4680 PRINT " 551 GET A$"
4681 GOSUB 9999
4690 PRINT ""
4700 PRINT " MORE OFTEN, I HAVE FOUND"
4710 PRINT ""
4720 PRINT " 580 GET A$:IF A$ = " CHR$(162)"" CHR$(162)" THEN 580"
4730 PRINT ""
4740 PRINT " WHICH CAN EITHER BE LEFT ALONE"
4750 PRINT " OR REDUCED TO "
4760 PRINT ""
4770 PRINT " 580 GET A$"
4780 PRINT ""
4790 PRINT " 10. GRAPHICS CHARACTERS"
4800 PRINT ""
4810 PRINT " ALMOST EVERY KEY OF THE PET CAN,"
4820 PRINT " WHEN SHIFTED, PRODUCE A SPECIAL"
4830 PRINT " CHARACTER. 'PET LOADER' DOES ONE"
4840 PRINT " THING ONLY IN THIS REGARD: IF"
4850 PRINT " THE PROGRAM CONTAINS NO SHIFTED"
4860 PRINT " LETTER-O, THEN ANY OCCURENCES OF"
4870 PRINT " SHIFTED LETTERS A, S, Z, AND X"
4880 PRINT " ARE ASSUMED TO BE SYMBOLS FOR"
4890 PRINT " SUITS OF A DECK OF CARDS, AND"
4900 PRINT " ARE CHANGED RESPECTIVELY TO S,"
4910 PRINT " H, D, AND C. (THIS MAY TURN OUT"
4911 GOSUB 9999
4920 PRINT " WRONG EITHER WAY, BUT IT WAS FUN"
4930 PRINT " TO PROGRAM!)"
4940 PRINT ""
4950 PRINT " 11. ASCII VALUE OF A LETTER"
4960 PRINT ""
4970 PRINT " ASC( ANY LETTER ) IS 64 LESS IN"
4980 PRINT " THE PET THAN IT IS IN THE APPLE."
4990 PRINT ""
5000 PRINT " 12. DIRECT SCREEN ADDRESSING"
5010 PRINT ""
5020 PRINT " THE PET HAS 25 LINES, AND EACH"
5030 PRINT " BYTE CAN BE ADDRESSED AS:"
5040 PRINT ""
5050 PRINT " 32768 + 40 * LINE + COLUMN"
5060 PRINT ""
5070 PRINT " WHERE THE UPPER LEFT CORNER IS"
5080 PRINT " LINE 0, COLUMN 0. "
5090 PRINT ""
5100 PRINT " THE APPLE HAS 24 LINES, AND EACH"
5110 PRINT " BYTE CAN BE ADDRESSED AS:"
5120 PRINT ""
5130 PRINT " XL%( LINE ) + COLUMN"
5140 PRINT ""
5141 GOSUB 9999
5150 PRINT " WHERE XL% HAS BEEN INITIALIZED:"
5160 PRINT ""
5170 PRINT " 1 DIM XL%(23) : FOR I=0 TO 7 :"
5180 PRINT " XL%(I) = 1024 + 128 * I :"
5190 PRINT " XL%(I + 8)= 1064 + 128 * I :"
5200 PRINT " XL%(I +16)= 1104 + 128 * I :"
5210 PRINT " NEXT"
5220 PRINT " "
5230 PRINT " 13. SOUND"
5240 PRINT ""
5250 PRINT " THE STOCK PET IS MUTE, BUT A"
5260 PRINT " SIMPLE METHOD OF USING THE " CHR$(162)"CB2" CHR$(162)""
5270 PRINT " OUTPUT TO DRIVE AN AMPLIFIER HAS"
5280 PRINT " BECOME POPULAR. DISCOVERY OF A"
5290 PRINT " POKE TO 59466 IS A DEAD GIVEAWAY"
5300 PRINT " THAT THIS TACTIC IS IN USE. THIS"
5310 PRINT " ADDRESS IS IN APPLE'S ROM SPACE,"
5320 PRINT " THEREFORE POKE HAS NO EFFECT."
5330 PRINT ""
5340 PRINT " 14. HARDWARE TIMER"
5350 PRINT ""
5360 PRINT " PET HAS A GENUINE TIMER, WHICH"
5370 PRINT " PROGRAMS CAN ADDRESS AS VARIABLE"
5371 GOSUB 9999
5380 PRINT " " CHR$(162)"TI" CHR$(162)" OR STRING " CHR$(162)"TI$" CHR$(162)". ACCURATE"
5390 PRINT " TIMING CAN BE DONE BY MEANS OF"
5400 PRINT " THE DELAY LOOP AT $FCA8, AND"
5410 PRINT " ROUGH TIMING CAN BE ACCOMPLISHED"
5420 PRINT " WITH A SIMPLE FOR-NEXT LOOP. THE"
5430 PRINT " APPLE CANNOT MEASURE ELAPSED"
5440 PRINT " TIME."
5450 PRINT ""
5460 PRINT " 15. PI"
5470 PRINT ""
5480 PRINT " A SINGLE KEY ON THE PET PROVIDES"
5490 PRINT " THE NUMBER " CHR$(162)"PI" CHR$(162)", 3.14159265 ETC."
5500 PRINT " NO SUCH FACILITY EXISTS IN THE"
5510 PRINT " APPLE, SO THE PET TOKEN $FF FOR"
5520 PRINT " PI IS TRANSLATED INTO $FB, WHICH"
5530 PRINT " APPROPRIATELY ENOUGH, IS APPLE'S"
5540 PRINT " TOKEN FOR " CHR$(162)" UNDEF'D FUNCTION " CHR$(162)"."
5550 PRINT " THIS CONSTITUTES A SYNTAX ERROR,"
5560 PRINT " WHICH CAN BE EASILY CORRECTED."
5570 PRINT " "
5580 PRINT "***** 9. CREDITS"
5590 PRINT ""
5600 PRINT "I RECEIVED A LOT OF HELP IN THIS"
5601 GOSUB 9999
5610 PRINT "PROJECT, ALL OF IT FROM GORDON"
5620 PRINT "CAMPBELL OF TORONTO, WHO PROVIDED"
5630 PRINT "MANUALS, CLIPPINGS, ADVICE, AND"
5640 PRINT "SEVERAL DOZEN PET PROGRAMS. GORD"
5650 PRINT "RECEIVED SEVERAL APPLESOFT PROGRAMS"
5660 PRINT "IN EXCHANGE, AND HE LOADED THEM INTO"
5670 PRINT "HIS PET! ... BUT THAT IS HIS STORY!"
5680 PRINT ""
5690 PRINT "***** 10. CONCLUSION"
5700 PRINT ""
5710 PRINT "'PET LOADER' IS A USEFUL CONVERSION"
5720 PRINT "TOOL, AND MAKES A MULTITUDE OF PET"
5730 PRINT "PROGRAMS AVAILABLE TO MANY USERS OF"
5740 PRINT "APPLE COMPUTERS. FOR ME, IT WAS ALSO"
5750 PRINT "EDUCATIONAL, PROVIDING EXPERIENCE IN"
5760 PRINT "6502 ASSEMBLY LANGUAGE AND IN THE"
5770 PRINT "VALUABLE SKILL OF DECIPHERING OTHER"
5780 PRINT "PEOPLE'S PROGRAMS. "
5790 PRINT ""
5800 PRINT "REMEMBER THIS PROGRAM IS ONLY A TOOL;"
5810 PRINT "THE FINAL RESPONSIBILITY FOR TURNING"
5820 PRINT "A PET PROGRAM INTO AN APPLE PROGRAM"
5830 PRINT "MUST ALWAYS REST WITH THE USER."
9998 VTAB 23: END
9999 GET A$: IF A$ < > CHR$(3) THEN HOME : RETURN